home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene 96
/
Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso
/
programs
/
remus04e
/
remus.doc
< prev
next >
Wrap
Text File
|
1997-01-17
|
38KB
|
726 lines
┬┬──┐ ┬┬──┐ ┬┬──┬──┐ ┌┐ ┌┬──┐
││ │ ││ ││ │ │ ││ │ ││
│├─┬┘ │├── ││ │ │ ││ │ └┴─┬┐
││ └┐ ││ ││ │ │ ││ │ ││
└┘ └ ┴┴──┘ └┘ ┴ ┴ └┴──┘ └──┴┘
─────────────────────────────────────────────────────────────────────
Written by Roman Dolejsi (RDOS of DIMENSION)
January 1, 1997
Last update: January 1, 1997
This is the documentation belonging to and explaining the use of
REMUS version 0.04e
Universal sound card emulator for MS-DOS
TOPICS covered in this document:
DISCLAIMER
APOLOGIZE
PURPOSE OF REMUS
REQUIREMENTS
INSTALLATION OF REMUS
REMUS IN ACTION
DIALOG LINE
AVAILABLE BASE CARDS
AVAILABLE EMULATIONS
GLOBAL EMULATION TABLE
SOUNDCARD AND EMULATION INFO
FUTURE PLANS
FREQUENTLY ASKED QUESTIONS
COPYRIGHT
WHERE TO FIND REMUS
THANX
CONTACTING ME
DISCLAIMER:
-----------
Although REMUS has been tested on several systems, I cannot guarantee that it
is bugless. Therefore I do not take responsibility for any damage directly or
indirectly caused by REMUS as a result of known/unknown errors in it or errors
caused by its access to your devices.
APOLOGIZE:
----------
Sorry, english is not my native language. However, I wrote this nice docy in
english without any help. I APOLOGIZE for any mistakes in the document. Take it
easy... Nobody is perfect.. :-)
PURPOSE OF REMUS:
-----------------
REMUS is a sound card emulator for IBM PC and compatibles running MS-DOS. By
emulation it will allow you to use products created for sound card you don't
have. It is programmed to be used on as many cards as possible, but it is still
in fairly alpha stage and don't expect any miracles.
REQUIREMENTS:
-------------
REMUS is coded in protected mode 386-assembler. You'll then need manager-free
MS-DOS environment (ie. without Emm386, Qemm, 386max or such memory managers).
REMUS will run only on computers with at least 2MB and less that 16MB RAM. I'm
really sorry for the higher limit but currently my manager will freeze due
to unknown reason. You may also find useful to have some supported soundcard.
INSTALLATION OF REMUS:
-------------------------
- first you have to make some directory on your drive. Then you have to unpack
there archive file RMSxyyz.ZIP.
(you probably did all this when you read these lines :-)
- REMUS pack should consist of these files:
REMUS.EXE - Main file - OPL player
REMUS.DOC - Documentation for REMUS (this file)
REMUS.REV - REMUS changes/revision history file
FILE_ID.DIZ - quick info file
- now you have REMUS successfully installed :-)
REMUS IN ACTION:
----------------
For emulation are used protected mode features. When REMUS starts protected
mode memory manager is initialized and takes control over memory, I/O, IRQ, DMA
and Timer mechanisms. When REMUS is running, your sound card is used for
emulation of some other sound card. In that time your original sound card is
not available. Instead, you can even have emulated sound card on the ports
where normally sits your real card. It's because your card is internally
managed by REMUS's emulation routines and vm86 client's accesses are remaped
into REMUS. REMUS can't be stopped, you have to reboot the computer after
using it.
DIALOG LINE:
------------
Dialog line looks as following:
REMUS.EXE [/opt] base_card [/card_params] emu_card [/card_params]
options:
/b - list of supported base cards
/e - list of available emulations
Current list of base cards will tell you what to put instead base_card
parameter and same for emu_card.
When you want for example Gravis Ultrasound with 768KB on port 240
to be emulated on Sound Blaster on port 220, you have to use these params:
REMUS.EXE sblr /p220 gusc /p240 /m3
and so on...
AVAILABLE BASE CARDS:
---------------------
These cards can be used for playing:
[adlb] - Adlib (OPL2)
Sound is generated by simulating 5-bit D/A converter. Sometimes sounds
really weird.. accepts parameter /p (port), default value is 388.
[dacm] - D/A Converter
This is an 8-bit mono D/A converter. Can be created with minimal effords
and its quality is not so bad. It's even very fast board. Accepts /p,
default is 378.
[gusc] - Gravis Ultrasound
WaveTable board with noiseless sound. In REMUS are used only two voices
offering stereo 16-bit D/A. Wavetable will be used later. It's quite fast
board. Accepts /p (port + 100), default is 320.
[pcsp] - PC Speaker
Original beeper available on every system. REMUS uses it as primitive 6-bit
mono D/A converter. Accepts /p (port), default is 42.
[sblr] - Sound Blaster
Board offering 8/16-bit mono/stereo sound depending on type. Here it's used
as very slow mono 8-bit D/A converter (only minimal support now). Accepts /p
(port), default is 220.
AVAILABLE EMULATIONS:
---------------------
More info about REMUS's emulation capabilities will come later, but now list
of emulations would be fine:
[adlb] - Adlib (OPL2) .. default: /p388
[dacm] - D/A Converter .. default: /p378
[gusc] - Gravis Ultrasound .. default: /p220 /m4
* /mX - memory size of emulated GUS in 256k banks
* on the base side there may be also /fX parameter for frequency
[pcsp] - PC Speaker .. default: /p42
[sblr] - Sound Blaster .. default: /p220
[ston] - Stereo-on-1 DAC .. default: /p378
There is option common to all of the emulations:
/pXXX - port number for emulated card
GLOBAL EMULATION TABLE:
-----------------------
* - fully working (at least with most progs)
# - nearly fully working (port/irq) except DMA emulation
q - sound card is sometimes switched off and then no emulation works
w - emulation engine is in progress but is useless right now
┌──────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│what │ P │ D │ D │ 2 │ A │ A │ S │ S │ S │ P │ P │ T │ S │ V │ W │ G │ G │ I │ A │ G │ M │ S │ M │
│ ──>│ C │ / │ / │ x │ D │ D │ B │ B │ B │ A │ A │ U │ N │ O │ S │ C │ U │ W │ W │ M │ T │ C │ A │
│ │ S │ A │ A │ D │ L │ L │ │ P │ 1 │ S │ S │ R │ D │ C │ S │ O │ S │ A │ E │ I │ 3 │ C │ U │
│ │ P │ │ S │ / │ I │ G │ │ R │ 6 │ 8 │ 1 │ T │ M │ M │ │ D │ │ V │ 3 │ D │ 2 │ 1 │ I │
│where │ K │ │ T │ A │ B │ │ │ O │ │ │ 6 │ B │ 2 │ S │ │ │ │ E │ 2 │ I │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│PCSPK │ *q│ *q│ *q│ │ wq│ │ #q│ │ │ │ │ │ │ │ │ │ #q│ │ wq│ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│D/A │ * │ * │ * │ │ w │ │ # │ │ │ │ │ │ │ │ │ │ # │ │ w │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│D/AST │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│2xD/A │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ADLIB │ * │ * │ * │ │ * │ │ # │ │ │ │ │ │ │ │ │ │ # │ │ w │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ADLG │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│SB │ * │ * │ * │ │ w │ │ # │ │ │ │ │ │ │ │ │ │ # │ │ w │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│SBPRO │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│SB16 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│PAS8 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│PAS16 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│TURTB │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│SNDM2 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│VOCMS │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│WSS │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│GCODEC│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│GUS │ * │ * │ * │ │ w │ │ # │ │ │ │ │ │ │ │ │ │ # │ │ w │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│IWAVE │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│AWE32 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│GMIDI │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│MT-32 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│SCC-1 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│MAUI │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
└──────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
SOUNDCARD AND EMULATION INFO:
-----------------------------
───═══ AWE 32 board ═══───
This is name of wavetable board created by a company Creative Labs, Inc.
It consists of standard Sound Blaster 16 board (refer to SB section) and
advanced wavetable processor EMU-8000 made by a renomed company E-MU, Inc.
Chip is capable of managing 32 16-bit independent voices, each with
its own 2 LFOs (low frequency oscillator), 2 EGs (envelope generator),
low pass filter and reverb and chorus effects. Sounds are created from
samples stored in internal memory space. EMU8000 can access up to 32MB of
memory, however in AWE32 there is only 1MB dedicated for ROM (expandable
to 4MB ??) and 512kB for RAM (expandable to 28MB). All voices are running
at constant speed 44.1kHz, while their LFO's speed may vary from 0.042Hz
to 10.72Hz and low pass filter's frequency from 100Hz to 8kHz. Whenever
EMU accessess RAM data or is drived to pass FM music from OPL chip, it uses
2 voices to refresh RAM memory and for FM throughpass. In that case only 30
voices are available for wavetable playing.
All effects for every voice and also some overall effects are made by
an effect engine, which is right now UNDOCUMENTED. These effects include
various Chorus, Hall and Reverb effects (for today, because effect engine
probably offers some programmability for myriads of new effects).
AWE 32 hasn't dedicated MIDI engine managing EMU-8000 and therefore it
has mechanisms for generating an NMI when something tries to access MIDI
ports. Software driver running in memory can then simulate missing MIDI
engine.
───═══ AWE 32 emulation engine specification ═══───
Right now only some very basic port mechanisms are emulated. No sound
yet nor any EMU-processor dependent function (EG/LFO/Filter counting etc.).
Apart of everything mentioned I can say effect engine will probably be
never supported because of lack of ANY documentation and this task will
also surely eat very much CPU power.
───═══ AWE 32 emulation engine compatibility ═══───
Name Author Type Status Checked by Comp Ver
────────────────────────────────────────────────────────────────────────
FXTweak Infinity util ok run/quit RDOS 4/160 .03a
───═══ D/A converter on LPT port ═══───
This is very simple board offering one D/A converter accessed via
paralel port. It's not detectable and is simple to use. There are many
circuits which can serve as D/A converter compatible boards. One of them,
so-called "resistor DAC" is very very inexpensive. It's sound quality is
not so bad. It's probably the best solution for REMUS users without any
sound card. Its circuitry is described below.
Also some more advanced boards offer D/A compatibility. These boards are
sometimes detectable and some games use their detection for enabling sounds.
One of these boards is Covox Speech Thing and another one is called Disney
Sound Source (this one probably offers something more but I have not info
about it at all).
───═══ Circuitry of the D/A converter on LPT port ═══───
You need one plug for your amp, one for your parallel port and 9 20k
and 9 10K resistors. Use 1% resistors if possible ─ and 20k sound much
better than 22k. The 100nF capacitor may not be needed, try removing it
if this circuit sounds poor.
Paralel Port:
signal pin 20k 20k
D0 2 >───███─┬─███──0v
20k █ 10k
D1 3 >───███─┤
20k █ 10k
D2 4 >───███─┤
20k █ 10k
D3 5 >───███─┤
20k █ 10k
D4 6 >───███─┤
20k █ 10k
D5 7 >───███─┤
20k █ 10k
D6 8 >───███─┤
20k █ 10k
D7 9 >───███─┤
20k █ 10k 100nF
├──────┤█────> To amplifier
█ 10k
GND 20 >───────┼────────────>
0v
───═══ D/A converter emulation engine specification ═══───
Fully working D/A emulation. Standard init port is 378h (LPT1).
Some check functions of Disney Sound Source are implemented.
───═══ D/A converter emulation engine compatibility ═══───
Name Author Type Status Checked by Comp Ver
────────────────────────────────────────────────────────────────────────
DMP 3.01 Otto Chrons player ok RDOS 4/66 .02a
Power Replay M. Grof player ok RDOS 4/66 .02a
Another World Delphine game ok RDOS 4/66 .02a
AnotherW Intro TDT intro ok RDOS 4/66 .02a
Fascination Koktel game ok RDOS 4/66 .02a
Gobliins Koktel game ok RDOS 4/66 .02a
Visual Player many ppl player ok RDOS 4/160 .03a
ModPlay Pro Mark J.Cox player ok RDOS 4/160 .03a
───═══ Gravis UltraSound board ═══───
This is name of family of wavetable boards created by a company called
Advanced Gravis Computer Technology Ltd.
Onboard pipeline chip named GF1 is capable of managing up to 32 16-bit
independent voices (D/As) using samples stored in onboard RAM (256k-1MB).
Sampling frequency depends on number of used voiced (14..32) and may
vary from 44kHz down to 19kHz. Current voice position pointer in memory
has fraction part and resulting sample is interpolated using that number.
This leads to very high quality of produced sound even when using low
frequency samples. For transfering samples to/from GUS's RAM, board's
ports or DMA can be used. However, ports are not so fast as DMA that
many products prefer DMA uploading.
Basic board had no sound source mixer while later versions came with
ICS or other mixer. Later boards (Gravis UltraSound MAX) came also with
special chip named CODEC for Digital Signal Processing. The newest card
(Gravis UltraSound PnP) uses only one chip with built-in GF1, mixer and
CODEC chip. This is AMD's InterWave chip and offers except standard GUS
also up to 16MB ROM / 16MB RAM locally adressable memory, digital mixer
for mixing voices together, 64 LFOs for tremolo/vibrato effects, effects
processing for chorus/reverb/flange..., stable native frequency 44kHz.
PnP's CODEC has independent sampling/playing rates, freqs up to 48kHz,
very large FIFOs and more... GUS PnP (Pro) ships with 1MB ROM and
0kB (512kB) RAM expandable to 8MB (8,5MB) (via 30-pin SIMM slots).
All boards are not compatible with any other standard but are able to
generate NMI (Non Maskable Interrupt) when some program access permitted
ports. This process is used for emulating other platforms (namely
Adlib (OPL2), Sound Blaster DAC or Roland MT-32/SCC-1 and General MIDI).
───═══ Gravis UltraSound emulation engine specification ═══───
ALL functions of GF1 are emulated. Except this also onboard timer and
IRQ generator are emulated. There is no DMA emulation now (buggy REMUS
DMA manager !?!).
Sound is created via software GF1 pipeline emulation engine offering
all features of GF1 (16-bit, uni/bidirectional loops, volume ramping,
interpolation). Stopped voice is not emulated for speed reason (on
original GUS it may be used as a simple D/A converter - but nearly isn't).
Software mixing of all voices is done at the same frequency as GF1 or
at its multiplied derivate. Multiplication factor can be choosed during
REMUS startup and may vary from 1/4 to 9/4 (Freq 11kHz- to Freq 99kHz-).
Standard factor is 1=4/4 (Frequencies 44kHz - 19kHz like those found in GF1).
IRQ/DMA numbers are changeable using ULTRINIT (GUS utility). Standard
setting is IRQ 11, DMA 5 (note that DMA manager in REMUS doesn't work now!).
Standard GUS port number is 220h.
GUS Memory is selectable (1-4: 256k, 512k, 768k, 1MB) and is allocated
from available extended memory during REMUS inicialization. Standard value
is 1MB memory (value 4).
NMI is not emulated (MEGAEM / SBOS don't work).
ICS, CODEC or whole InterWave chip are not emulated.
───═══ Gravis UltraSound emulation engine compatibility ═══───
Name Author Type Status Checked by Comp Ver
────────────────────────────────────────────────────────────────────────
Scream Trck 3 FC medit ok RDOS 4/160 .01b
GusPlay 1.5 Cascada player ok RDOS 4/160 .01b
Cartoon MiST 64k ok RDOS 4/160 .01b
Debut DarkZone demo ok RDOS 4/160 .01b
Bill G Force Complex 64k ok, slow!? RDOS 4/160 .02a
Oops! Elf 64k ok RDOS 4/160 .02a
Louise Karma 64k ok RDOS 4/100 .02a
Second Reality FC demo ok, 1/2 spd RDOS 4/160 .01b
Big Deal Acme demo - vcpi/dpmi RDOS 4/160 .01b
Cyboman 3 Hnut Loop demo - vcpi/dpmi RDOS 4/160 .01b
Flight Sin demo ok RDOS 4/160 .01b
Arrow Grid 64k ugh, chip?! RDOS 4/160 .01b
Shadow Team Hirmu! 64k ok RDOS 4/160 .01b
Res. Rangers Live! 64k ok RDOS 4/160 .01b
Shamaan Complex demo ok RDOS 4/160 .01b
Mind Plr 1.0 Nght Brkr plr ok RDOS 4/160 .01b
Amoeba Plr 0.9 Amoebasoft plr ok RDOS 4/160 .01b
Disorder 2 Statix trckr - vcpi RDOS 4/160 .01b
Extreme 0.97b Extreme trckr - vcpi RDOS 4/160 .01b
GusDrive II CCS-prod. ramdsk - blockdev RDOS 4/160 .01b
C64S Emulator M.Peternel emultr - silent RDOS 4/160 .01b
PolyPlay AcmE plr ptrn skip RDOS 4/100 .02a
Crystal Player S.Grandjoux plr ok RDOS 4/100 .02a
DMP 4.01 Otto Chrons plr ok, w/o dma RDOS 4/100 .02a
Digital Plr Pro plr - irq/dma RDOS 4/100 .02a
Impulse Tracker Jeffrey Lim trckr ugh, lo spd RDOS 4/100 .02a
SSS Legend Des. plr ok RDOS 4/160 .02a
SidPlay 1.40a M.Schwendt plr - Exception RDOS 4/160 .03a
BBStro Dig.Design intro ok RDOS 4/160 .03c
BNP Blue Nose intro ok RDOS 4/160 .03c
The One Eclipse intro ok RDOS 4/160 .04d
TDU Jam Dream Dsgn intro ok RDOS 4/160 .04d
Joe Mix TPOLM demo ok RDOS 4/160 .04e
───═══ PC Speaker ═══───
Although PC compatible systems are equipped with no sound board at all,
the simple thing that makes your PC beep, can also be programmed to
substitute weird D/A (6-bit) to produce digitized sound. Some programs
(the older ones) have used this capability to produce digitized sounds or
some music.
───═══ PC Speaker emulation engine specification ═══───
Emulated PC Speaker is always switched to digital which is fully emulated.
No beeping can be done. Digital PC Speaker emulation is not as bad as someone
may believe, because it's often done on real D/A converters and 6-bit Speaker
value is expanded to 8/16-bit equivalent instead.
───═══ PC Speaker emulation engine compatibility ═══───
Name Author Type Status Checked by Comp Ver
────────────────────────────────────────────────────────────────────────
DMP 3.01 Otto Chrons player ok RDOS 4/66 .04a
ModPlay Pro Mark J.Cox player ok RDOS 4/160 .04a
Inertia Player Inertia player ok RDOS 4/66 .04a
───═══ Sound Blaster board ═══───
This is name of family of boards created by Creative Labs, Inc.
Sounds are made via onboard D/A converter. To make things easier there
is a DSP (Digital Signal Processor) which accepts some commands. These
commands are used to set up some parameters on the card or send digital
data to the D/A converter. When multichannel music is needed, it's up to
the program to mix channels together and then send result to only ONE
D/A converter on the board. Some new boards of this type use two D/As,
every of them assigned to one side (left/right) for stereo music. Basic
board is capable of making 8-bit mono sound while the newest can cope
with 16-bit stereo samples (two 16-bit D/As). The board also supports
so-called DMA channel for sending data to D/A without CPU usage. 16-bit
board has to have two DMAs, one 8-bit and one 16-bit. For proper work
of DMAs, an IRQ is needed (It informs computer that DMA process has ended).
On 8-bit boards DMA and IRQ numbers are set with onboard jumpers while
on 16-bit boards DMA and IRQ numbers are runtime changeable.
On some 16-bit boards there is another chip called CSP (old ASP). It is
short term for Advanced Signal Processor which is mainly used to compress
recorded stream of data or for voice recognition. Documentation for this
chip has never been released and therefore it will never be support for it
in REMUS (probably).
Apart of this, there is also an onboard OPL2 chip for Adlib compatibility
(refer to FM/OPL emulation). On SB Pro 1 there were two OPL2 chips for stereo
music available, each of them for one side. Since SB Pro 2 there is only
one OPL3 stereo chip capable of more advanced, 4-operator FM music.
All boards are backward compatible down to Sound Blaster 1.0.
These board versions are known:
──══ Name ══── ───═══ DAC specification ═══─── ─═ DSP ═─
┌───────────────────┬────────┬────────┬─────────────────────┬─────────┐
│ Sound Blaster 1.x │ mono │ 8-bit │ up to 11kHz │ 1.0x │
├───────────────────┼────────┼────────┼─────────────────────┼─────────┤
│ Sound Blaster 2.0 │ mono │ 8-bit │ up to 22kHz │ 2.0x │
├───────────────────┼────────┼────────┼─────────────────────┼─────────┤
│ Sound Blaster Pro │ stereo │ 8-bit │ up to 22kHz / 44kHz │ 3.0x │
├───────────────────┼────────┼────────┼─────────────────────┼─────────┤
│ Sound Blaster 16 │ stereo │ 16-bit │ up to 44kHz │ 4.xx │
└───────────────────┴────────┴────────┴─────────────────────┴─────────┘
───═══ Sound Blaster DAC emulation engine specification ═══───
Right now only port and IRQ emulation works. Emulated DSP version is
1.01 with some check functions from 3.xx DSP (SBPro's DIAGNOSE works :-).
IRQ number is not selectable and is permanently set to IRQ10 (lower IRQs
do not work for some strange reason - ie. REMUS IRQ manager bug??).
Don't even think about DMA emulation. REMUS's DMA manager is unusable.
───═══ Sound Blaster DAC emulation engine compatibility ═══───
Name Author Type Status Checked by Comp Ver
───────────────────────────────────────────────────────────────────────
SBPro Diagnose Creat.Labs util ok (DMA-) RDOS 4/33 .03a
Another World Delphine game ok RDOS 4/33 .03a
AnotherW Intro TDT intro ok RDOS 4/33 .03a
ModPlay Pro Mark J.Cox player ok RDOS 4/160 .03a
FUTURE PLANS (Global targets):
------------------------------
* EMS support
- memory paging manager for RPMMM needed first
* DPMI support
- probably 32-bit clients only
- minimal functions, but at least those needed by Tran's PMODE extender
- at the beginning buggy stack management (I don't understand it now)
* complete move in protected mode
- right now are base card inits in real mode (really messy, isn't it? :)
* total modularity
- one code for one emulation target at the binary level (now only on
source level, during compilation distributed throughout bases)
* online settings menu
- with runtime-changeable emulations, memory options, maybe disassembler
* coprocessor usability
- FPU is now detectable, but generates Divide by zero error when accessed
* Pro-Pack error solving
- now Pro-packed files definitely hang computer (why?! not under debugger!)
FUTURE PLANS (Emulation targets):
---------------------------------
* full Sound Blaster emulation
- DMA manager is not functional - DMA support is not possible now :-((
- stereo
- 16-bit
* Adlib (OPL2) emulation
- realtime FM digital emulation is very very hard thing to do :-)
* OPL3 emulation
- Depends on OPL2 emulation, would probably need the most CPU power
ever seen.
* Gravis Ultrasound DMA/IRQ handling emulation
- should work but doesn't now .. flame must go to REMUS DMA Manager
* Gravis UltraSound PnP emulation (AMD InterWave wavetable chip)
- synthesizer part will be probably first
- time for work... (have very complete documentation)
- its digital mixer is very interesting thing (and hard to emulate)
* Sound Blaster AWE32 emulation (EMU8000 wavetable chip)
- time for work... (have documentation for main pipeline processor)
- some documentation for EMU's effects engine needed
(dummy chaos of data arrays sent to card really does not tell anything)
- probably the hardest emulation I've ever seen
* Roland MT-32 / Roland Sound Canvas / General Midi emulation (wavetable chips)
- documentation for SYSEXes needed
- really explaining documentation for all the wheels and other effects
REMUS FREQUENTLY ASKED QUESTIONS:
---------------------------------
* REMUS hangs up after initialization
- if you have more than 16MB RAM, REMUS will not work (for now)
- if you have some memory manager incompatible with INT15 or HIMEM running,
REMUS will not work
- if you don't have XMS driver loaded and some application uses Xmemory
via INT15 BIOS services, computer hangs when REMUS starts and this
application will try to access that Xmemory (for example Norton Cache)
* REMUS does not want to run with PM driver (EMM386/QEMM/Win) installed in mem.
- REMUS is clean 32-bit PM manager. It needs completely free environment to
operate. Therefore other PM managers will NEVER be supported in REMUS.
REMUS is from the beginning meant as a complete memory manager so it's
internal functionality is absolutely incompatible with anything other
(even VCPI's ProtMode level 0).
* When I install REMUS there is no EMS memory in system. Some of my programs
don't want to run at all.
- EMS services are not yet supported by REMUS, sorry...
* My application told me I have no VCPI compatible environment and refused
to run when I started it under REMUS.
* My application refused to run with exit message about impossibility to enter
DPMI protected mode.
- VCPI/DPMI are 32-bit Protected mode interfaces allowing your applications
to run 16/32-bit protected mode code under other 32-bit PM environment
installed in memory. Although these ifaces are not yet supported under
REMUS, there exist light of hope that DPMI will be supported in far far
future. Right now DPMI interface is provided to ensure clients using it
won't hang computer via their lame PM detection (ie. Borland's dpmiload).
* How much system memory takes REMUS for its work ?
- REMUS takes about 1k of conventional mem. In fact, everything is now in
Xmemory (above 1MB) and takes there about 25kB-1050kB depending on current
running emulation. But Xmemory requirements probably don't bother anyone.
* GUS emulation is sometimes STRANGE !! often "ultraclicks" or noise occurs !!
- The noise is generated due GUS emulation sampling frequency. Try to use
at least 75% (33kHz) or more of GUS real sampling speed. Emulation engine
is rather old and I'll probably try to make completely new engine some day.
Maybe then also those painful ultraclicks disapper.
* emulations on SB are really slow, sometimes computer hangs up.
- Because of SB port speed emulations work fine up to about 20kHz. Above
this limit SB reply is too slow and machine often hangs up. This problem
will disappear after making DMA manager and DMA-using SB support.
* all emulations on PCSP are sometimes useles (quiet).
- In some programs PC Speaker is switched off and then no emulation works
(speaker is simply quiet).
- This is fault of my PCSP-driver and will be corrected in one of the next
versions of REMUS.
- example: Fascination game by Koktel vision.
* I've heard Disney Sound System sound card is something like D/A converter.
Is it right ? And what about Covox Speech Thing ?
- Those cards offer standard DAC on LPT compatibility, but they have
probably also some DMAs or other things for faster playback. I have no
documentation about them and also some good programs to test functionality.
- Already working example: Another World game by Delphine software (DAC LPT)
- Not working example: Wolfenstein 3D game by ID software (DMA DAC ??)
* I've seen there are some strange emulations (for example: D/A on D/A). What
are they for ?
- these emulations are for people owning the right sound card but on another
port / IRQ / DMA they need...
* Could I use D/A -> D/A emulation for redirecting printer to another LPT ?
- No, generally not. Emulation works only for D/A output, LPT control port
emulation is designed to work moreless like Covox/Disney Sound Source's
LPT DACs, not like I/O ports of standard printer port.
* Some emulations are generally quite slow. What's the problem ?
- With some soundcards emulation could not be fast because of their speed.
- Some emulated sound cards are so hard to emulate (example: GUS) that the
emulation is getting to be quite slow.
- Protected Mode system exception handling eats some system resources
so even simple emulations are slower than should be.
- example: D/A converter on D/A converter.
* I've realised that all IRQ and DMA emulations don't work. Am I right ? Why ?
- yes, they don't work. Some nasty bugs in REMUS's IRQ/DMA manager cause
that all emulations which need some IRQ or IRQ/DMA don't partially or
completely work. IRQ/DMA is currently needed for emu_GUSC and emu_SB.
* Hey guy, where is my card in the list of supported soundcards ? How you dare
my soundcard is not supported ?
- That's not my fault. Your card will be supported if I get enough info
about it and some program which uses it (for testing). Then I would
probably include it in REMUS. Also one piece of that card borrowed would
greatly improve implementing.
* Ugh, why is some card listed in emulations but is not supported as base ?
- That's simple. I would probably not include any sound card support as base
until I get it for testing. But emulation fuctionality I can easily test
in available programs by setuping them to that card.
* Hey boy, I wanna emulation of XY$@#325 sound card and there is none. What
should I do for it ?
- First you should look in the FUTURE section to know the status of that
card. If you find no progress of that card there, you should look for
some programming info about that sound card and then you can send me this
info and the program which works with that sound card (for testing).
If you don't find any programming info you can still send me the program
that uses it and i'll try luck and debug that piece of code.
But in both cases don't expect fast response - I'm really really lazy :-)
Basic block of emulation takes me about 2-3 days to complete but really
powerfull and featured emulation takes me about next half year of my lazy
programming :-)
WHERE TO FIND REMUS:
-----------------------
Each time I have a new version of REMUS available, I'll upload it to:
ftp://sorry.vse.cz/dimension (Dimension FTP site in Prague, Czech Republic)
http://sorry.vse.cz/dimension (Dimension Inet HeadQuarters, Czech Republic)
REMUS will be probably also available at ftp.cdrom.com and ftp.sunet.se
FTP archives.
Ask your local Internet or FTP expert on how to reach them.
Another way is to visit REMUS's homepage at address:
http://sorry.vse.cz/dimension/rdos/remus (Http site in Prague, CZE)
THANX:
------
Although I did all the programming, there are few friends which helped me with
some things about this program. Thanx go to:
Ondrej Stasek (Ondar/Dimension) - testing and suggestions
David Voracek (Assassin/Dimension) - - || -
and other friends for their (mostly) betatesting and suggestions..
CONTACTING ME:
--------------
If you want to contact me, write to address listed below. If you want to send
me suggestions, tips or simply greets, send it freely. Also some money would be
good as a power and motivation for further work :-) If you find any new sndcard
and its programming info you can also send it to me (the info). Nice would be
also any report of success in functionality of REMUS. Don't forget many
reactions will bring me in new effort in this rather old project.
My address: E-Mail: (non-commercial)
Roman Dolejsi (RDOS) roman@sorry.vse.cz
Husova 419, Vcelna roman@romeo.pf.jcu.cz
37382 Ceske Budejovice
Czech Republic
Please do not send me E-mails longer than 150kB (because of our local smtp
server limit).
*** end of REMUS documentation ***